<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Descarga de vídeos de Instagram</h1>
              <h2 class="sub c-fff f-18 fw400">
                Descargue videos, fotos, carretes, historias e IGTV de Instagram
                 Contenido en línea
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/es/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descargador de fotos de Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Ingrese la URL de la FOTO de Instagram a continuación
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/es/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descargar carretes de Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Ingrese la URL de Instagram Reels a continuación
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/es/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descargar historia de Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Ingrese la URL de las Historias de Instagram a continuación
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/es/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descargar Vídeo IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Ingrese la URL de IGTV de Instagram a continuación
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Recuperando datos, ¡espere unos segundos!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              El sitio no puede procesar su enlace porque es privado.
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Los datos que ingresaste no son un enlace. Por favor ingrese un enlace válido, para
               ejemplo:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Todas las funciones de Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta es compatible con todas las variedades de videos de Instagram
               y enlaces de imágenes.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/es">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Descargador de vídeos de Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta está diseñado para permitirle descargar su propio
                   Contenido de Instagram. Ofrece soporte para descargar ambos.
                   Vídeos individuales y múltiples de Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/es/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Descargador de fotos de Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  El descargador de fotos de Instagram de Savinginsta lo hace sencillo
                   para guardar una o varias fotos, incluidos collages,
                   de Instagram. Con esta herramienta, descargar publicaciones individuales
                   imágenes o una colección de fotos de Instagram es simple y
                   directo.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/es/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Descargar carretes de Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  El descargador de carretes de Instagram de Savinginsta le permite
                   descargue sin esfuerzo videos de Reels desde publicaciones de Instagram a
                   tu dispositivo, proporcionando una solución sencilla donde Instagram
                   por sí solo no ofrece soporte para esta función.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/es/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Descargador de IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  Las historias de Instagram ofrecen una plataforma distintiva para que los usuarios
                   compartir sus experiencias diarias a través de fotos y videos con un
                   Gran audiencia. Ocasionalmente, es posible que desees guardar un favorito.
                   historia, pero esta funcionalidad no está disponible en la aplicación.
                   Savinginsta aborda este problema proporcionando una solución que
                   permite a los usuarios descargar y ver fácilmente historias de Instagram
                   sin conexión, lo que garantiza que nunca se pierda contenido memorable.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/es/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Visor de historias de Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV ofrece videos de larga duración y, si no puedes
                   verlos inmediatamente, tienes la opción de descargarlos
                   Vídeos IGTV a tu PC. Esto le permite cómodamente
                   Vuelve a visitarlos y disfrútalos más tarde, incluso sin Internet.
                   conexión y elimina preocupaciones sobre el contenido de IGTV
                   siendo eliminado o no disponible.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Descargar con la aplicación Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Nuestra aplicación ofrece una solución rápida y sencilla para descargar vídeos de Instagram, proporcionando vídeos de calidad HD sin marcas de agua.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - LA MEJOR HERRAMIENTA PARA DESCARGAR INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta se destaca como un descargador de Instagram de primer nivel.
               diseñado por expertos para descargar rápidamente contenido de alta calidad desde
               Instagram. Al buscar el método más eficaz para descargar
               Medios de Instagram, el descargador Savinginsta emerge como líder
               solución de terceros.
            </p>
            <p class="f-16 c-ccc">
              Instagram, reconocida como la aplicación para compartir fotografías más popular del mundo,
               es testigo de la carga de millones de fotos diariamente. Para tal
               Momentos, la necesidad de un descargador de videos de Instagram se vuelve
               evidente, proporcionando una solución perfecta para sus necesidades inmediatas.
               Esta herramienta es esencial para cualquiera que busque preservar su
               contenido favorito de Instagram de manera eficiente.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Características del descargador de videos de Instagram de Savinginsta:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Descarga de videos de Instagram Rápido, fácil y seguro.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Puede cerrar sesión en su cuenta de Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Con solo hacer clic en un botón, puedes descargar imágenes de Instagram
                   y vídeos.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Descarga y guarda imágenes y vídeos en su formato original.
                   definición y calidad.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Desde cuentas personales, descargue y guarde videos de Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Alta velocidad: A partir de ahora, Savinginsta ofrece la más rápida
                   velocidades de descarga.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Cómo usar Savinginsta Instagram Downloader para guardar desde IG
              </h3>
              <div class="note c-ccc f-16">
                Nota: Asegúrese de que el video o la foto de Instagram que desea
                 La descarga es desde una cuenta pública.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Paso01:</span>
                  <span class="f-16 c-000"
                    >Copie la URL de las fotos y vídeos de Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">En la aplicación de Instagram:</div>
                  <div class="c-000 f-16">
                    Para iOS: toque para obtener la URL de la foto de Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Para Android: haga clic encima de la publicación y seleccione 'Copiar el
                     URL de Instagram', luego presiona 'Copiar URL compartida'. El enlace será
                     copiado a su portapapeles.
                  </div>
                  <div class="fw700 c-000 f-16">- En PC/Mac:</div>
                  <div class="c-000 f-16">
                    Haga clic derecho en la fecha del video o foto de Instagram y
                     seleccione "Copiar dirección de enlace" para descargar contenido de Instagram en
                     tu escritorio.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Paso02:</span>
                  <span class="f-16 c-000">
                    Pegue la URL en Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Navegue hasta Savinginsta.App: el Instagram dedicado
                     descargador.
                  </div>
                  <div class="c-000 f-16">
                    Copie y pegue la URL copiada en el campo de texto indicado.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Paso03:</span>
                  <span class="f-16 c-000">Iniciar la descarga</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Haga clic en el botón "Descargar" para iniciar el vídeo de Instagram o
                     proceso de descarga de fotos.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Información de uso importante
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta está diseñado principalmente para descargar videos y
                     imágenes de tu propia cuenta de Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Priorizamos la privacidad del usuario y nos reservamos el derecho de rechazar
                     servicio si nuestras herramientas se utilizan para infringir los derechos de otros
                     privacidad o acceder a material no autorizado.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Para una comprensión integral de nuestras políticas

              <a class="fw700 c-blue" href="/terms-of-service">
                lea nuestros Términos de servicio completos aquí.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Herramientas</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/es/instagram-story-download"
                      >Descargador de historias de Instagram</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/es/instagram-reels-video-download"
                      >Descargador de carretes de Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Descargador de Tiktok</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Apoyo</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Contacto </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Legal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Términos de servicio
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> política de privacidad </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Nosotros no estamos afiliados a Instagram o Meta</b
            >
            <div class="c-ccc f-16">
                © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "es",
    },
    bodyAttrs: {
      "data-lang": "es",
    },
    title:
      "Descargador de Instagram - Descarga videos de Instagram en línea - Savinginsta",
    meta: [
      { property: "og:locale", content: "es" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: descargue fácilmente videos, carretes y fotos de Instagram con nuestra herramienta fácil de usar. Guarda tus vídeos de Instagram de forma rápida y segura en cualquier dispositivo.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Descargador de Instagram - Descarga videos de Instagram en línea - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Descargador de Instagram - Descarga videos de Instagram en línea - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/es" },

      {
        property: "og:description",
        content:
          "Savinginsta: descargue fácilmente videos, carretes y fotos de Instagram con nuestra herramienta fácil de usar. Guarda tus vídeos de Instagram de forma rápida y segura en cualquier dispositivo.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/es" },
      {
        name: "twitter:title",
        content:
          "Descargador de Instagram - Descarga videos de Instagram en línea - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: descargue fácilmente videos, carretes y fotos de Instagram con nuestra herramienta fácil de usar. Guarda tus vídeos de Instagram de forma rápida y segura en cualquier dispositivo.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/es",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Descargador de Instagram - Descarga videos de Instagram en línea - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: descargue fácilmente videos, carretes y fotos de Instagram con nuestra herramienta fácil de usar. Guarda tus vídeos de Instagram de forma rápida y segura en cualquier dispositivo.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `¿Qué es un descargador de vídeos de Instagram?`,
          content: `Un Instagram Video Downloader es una herramienta basada en web diseñada para guardar fotos, videos y contenido de IGTV de Instagram para su uso posterior. Savinginsta se destaca como la mejor opción para descargar contenido de Instagram sin esfuerzo.`,
        },
        {
          title: `¿Es necesario iniciar sesión en mi cuenta de Instagram para utilizar Savinginsta??`,
          content: `No, no es necesario iniciar sesión en su cuenta de Instagram. Savinginsta garantiza descargas seguras y anónimas desde Instagram sin requerir ninguna información personal.`,
        },
        {
          title: `¿Puedo guardar vídeos directamente de Instagram?`,
          content: `No es posible descargar vídeos directamente de tu feed de Instagram o de las historias de otros a través del propio Instagram. Sin embargo, Savinginsta ofrece una solución sencilla. Simplemente visite su sitio web en https://servedinsta.com y siga las sencillas instrucciones proporcionadas..`,
        },
        {
          title: `¿El servicio de descarga de vídeos y fotos de Instagram es gratuito?`,
          content: `Sí, Savinginsta ofrece este servicio de forma totalmente gratuita y sin limitaciones en el número de descargas..`,
        },
        {
          title: `¿Puedo descargar contenido de cuentas privadas de Instagram?`,
          content: `De hecho, Savinginsta te permite descargar vídeos, historias y fotos de cuentas privadas de Instagram. Las instrucciones detalladas están disponibles en su plataforma..`,
        },
        {
          title: `¿Es posible guardar historias de Instagram?`,
          content: `Absolutamente. Con Savinginsta, puedes ver y descargar cualquier historia de Instagram. Simplemente haga clic en los tres puntos (⁝) en la historia, copie el enlace y péguelo en Savinginsta para iniciar la descarga.`,
        },
        {
          title: `¿Savinginsta admite descargas en computadoras?`,
          content: `Sí, Savinginsta es totalmente compatible con PC, lo que le permite descargar videos, fotos, historias y más de Instagram directamente a su computadora..`,
        },
        {
          title: `¿Puedo usar Savinginsta para descargar desde Instagram en dispositivos Android??`,
          content: `Ciertamente. Para usuarios de Android, simplemente copie el enlace de la publicación de Instagram, péguelo en Savinginsta y guárdelo. Para obtener más detalles, visite su guía sobre descargas de Instagram en Android.`,
        },
        {
          title: `¿Cómo puedo descargar vídeos y fotos de Instagram en iPhone/iPad (iOS)?`,
          content: `Savinginsta ha elaborado una guía paso a paso fácil de usar para descargar varios tipos de videos a su iPhone o iPad. Siga este enlace para obtener instrucciones: Descargar videos de Instagram en iPhone.`,
        },
        {
          title: `¿Qué pasa si el vídeo de Instagram se reproduce en lugar de descargarse?`,
          content: `Para resolver esto, haga clic derecho en el video y seleccione 'Guardar como...' para elegir la ubicación deseada para guardar, en lugar de hacer clic con el botón izquierdo..`,
        },
        {
          title: `¿Dónde se almacenan los vídeos después de descargarlos??`,
          content: `Los videos descargados generalmente se almacenan en la carpeta "Descargas" tanto en dispositivos móviles como en PC con Android.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    
    //到达首页
    handleClick("guide_homepage_frist",{});
    handleClick("guide_homepage",{});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
 @import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
